home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / editor / proged10.lha / InstallProgED / sources / PED_Scan / ScanDefine.c < prev    next >
C/C++ Source or Header  |  1995-09-24  |  1KB  |  67 lines

  1.  
  2. /***** Include vari *****/
  3.  
  4. #include "ProgED:sources/include/Ped.h"
  5.  
  6.  
  7.  
  8. /*****
  9.  *
  10.  * FUNZIONE:    ULONG SAVEDS ASM main(char *line,char *sectionname)
  11.  *
  12.  * SCOPO:    Cerca un riferimento ad un #define nella linea puntata
  13.  *        da "line". Il nome del riferimento viene copiato in
  14.  *        "sectionname".
  15.  *
  16.  * NOTA:    Utilizza SEMPRE la funzione geta4() o la direttiva __saveds!
  17.  *
  18.  * RESTITUISCE: Lunghezza della stringa copiata in "sectionname".
  19.  *        0=riferimento non trovato.
  20.  *
  21.  ****/
  22.  
  23. ULONG SAVEDS ASM main(RG(a0) char *line,RG(a1) char *sectionname)
  24. {
  25.     char    *p,
  26.         *q,
  27.         *d;
  28.     int    i;
  29.  
  30.  
  31.  
  32.     /***** Controlla se la linea inizia per '#define' *****/
  33.     p=line;
  34.     if (*p)
  35.     {
  36.         if (p[0]=='#')
  37.         if (p[1]=='d')
  38.         if (p[2]=='e')
  39.         if (p[3]=='f')
  40.         if (p[4]=='i')
  41.         if (p[5]=='n')
  42.         if (p[6]=='e')
  43.         {
  44.             /***** Se si, salta fino a trovare la prossima
  45.                 parola saltando spazi e TAB *****/
  46.             p+=7;
  47.             while((*p==32)||(*p==9))    p++;
  48.  
  49.             /***** Copia la parola fino al prossimo spazio
  50.                 o TAB o '(' e ritorna in D0 la lunghezza. *****/
  51.             if (*p)
  52.             {
  53.                 q=p;
  54.                 while((*q!=32)&&(*q!=9)&&(*q!='(')&&(*q))    q++;
  55.  
  56.                 d=sectionname;
  57.                 for(i=0;i<q-p;i++)    *d++=p[i];
  58.                 *d='\0';
  59.                 return(q-p);
  60.             }
  61.         }
  62.     }
  63.  
  64.     /***** Nulla da fare! *****/
  65.     return(0);
  66. }
  67.